import request from '../utils/request'

// import Vue from 'vue'
// import axios from 'axios'
// Vue.prototype.$axios = axios
// const baseURL = 'http://localhost:8080'

// 负责具体的接口请求方法

/**
 * 注册接口
 * @param {*} param { username: 用户名, password: 密码, repassword:确认密码 }
 * @returns Promise对象
 */
export const registerAPI = ({ username, password, repassword }) => {
  return request({
    url: '/api/reg',
    method: 'post',
    data: {
      password,
      username,
      repassword
    }
  })
}

/**
 * 登陆接口
 * @param {*} param { username: 用户名, password: 密码 }
 * @returns Promise对象
 */
export const loginAPI = ({ username, password }) => {
  return request({
    url: '/api/login',
    method: 'post',
    data: {
      password,
      username
    }
  })
}

/**
 * 获取-用户信息接口
 * @returns Promise对象
 */
export const getUserInfoAPI = () => {
  return request({
    url: '/my/userinfo'
    // headers: {
    //   // 请求头携带token参数
    //   // 传参给后台：params（查询字符串query），data（请求体body），headers（请求头）
    //   Authorization: store.state.token
    // }
  })
}

/**
 * 获取-侧边栏数据
 * return Promise对象
 */
export const getMenuAPI = () => {
  return request({
    url: '/my/menus'
    // headers: {
    //   // 请求头携带token参数
    //   // 传参给后台：params（查询字符串query），data（请求体body），headers（请求头）
    //   Authorization: store.state.token
    // }
  })
}

/**
 * 个人中心更新用户信息
 * @param {*} param0
 * @returns
 */
export const updateUserInfoAPI = ({ id, username, nickname, email, user_pic }) => {
  return request({
    url: '/my/userInfo',
    method: 'PUT',
    data: {
      id,
      username,
      nickname,
      email,
      user_pic
    }
  })
}

/**
 * 更新用户头像
 * @param {*} avatar 头像是base64字符串
 * @return Promise对象
 */
export const updateUserAvatarAPI = (avatar) => {
  return request({
    url: '/my/update/avatar',
    method: 'PATCH',
    data: {
      avatar
    }
  })
}
/**
 * @param {*} { old_pwd：旧密码， new_pwd:新密码， re_pwd:确认新密码 }
 * @return Promise对象
 */
export const updatePwdAPI = ({ old_pwd, new_pwd, re_pwd }) => {
  return request({
    url: '/my/updatepwd',
    method: 'PATCH',
    data: {
      old_pwd,
      new_pwd,
      re_pwd
    }
  })
}

/**
 * 获取文章分类列表
 * @return Promise对象
 */
export const getArtCateListAPI = () => {
  return request({
    url: '/my/cate/list'
  })
}

/**
 * 保存文章分类
 * @param {*} param0 { cate_name:分类名，cate_alias：分类别名 }
 * @return Promise对象
 */
export const saveArtCateAPI = ({ cate_name, cate_alias }) => {
  return request({
    url: '/my/cate/add',
    method: 'POST',
    data: {
      cate_name,
      cate_alias
    }
  })
}

/**
 * 保存文章分类
 * @param {*} { id:文章分类id，cate_name:分类名，cate_alias：分类别名 }
 */
export const updateArtCateAPI = ({ id, cate_name, cate_alias }) => {
  return request({
    url: '/my/cate/info',
    method: 'PUT',
    data: {
      id,
      cate_name,
      cate_alias
    }
  })
}
/**
 * 删除文章分类
 * @param {*} id
 * @returns
 */
export const delArtCateAPI = (id) => {
  return request({
    url: '/my/cate/del',
    method: 'delete',
    params: {
      id
    }
  })
}
/**
 * 发布文章
 * @param {*} fd FormData 对象
 * @returns Promise对象
 */
export const uploadArticleAPI = (fd) => {
  return request({
    url: '/my/article/add',
    method: 'post',
    data: fd // fd已经是一个对象了
    // cate_id,
    // content,
    // cover_img,
    // state
    // 如果是一个普通对象，axios会把转成json字符串在请求体里交给后台，
    // 这个接口文档要求请求体里是一个FormData类型（表单数据对象）携带文件传给后台
    // title,
  })
}

/**
 * 获取-文章列表
 * @param {*} params { pagenum：当前页码, pagesize：当前页需要的数据条数, cate_id：文章分类id, state：文章状态 }
 * @returns Promise对象
 */
export const artListAPI = ({ pagenum, pagesize, cate_id, state }) => {
  return request({
    url: '/my/article/list',
    params: {
      pagenum,
      pagesize,
      cate_id,
      state
    }
  })
}

/**
 * 获取-文章详情
 * @param {*} id：文章id
 * @returns Promise对象
 */
export const getArtDetailAPI = (id) => {
  return request({
    url: '/my/article/info',
    params: {
      id
    }
  })
}

/**
 * 删除-文章
 * @param {*} id：文章id
 * @returns Promise对象
 */
export const delArtAPI = (id) => {
  return request({
    url: '/my/article/info',
    method: 'DELETE',
    params: {
      id
    }
  })
}
